<?php

if (!function_exists("sortArrByManyField")) {
    /**
     *  数组按多字段排序
     *
     * @return mixed|null
     * @throws Exception
     * create_at: 2023-06-27 15:49:33
     * update_at: 2023-06-27 15:49:33
     */
    function sortArrByManyField()
    {
        $args = func_get_args(); // 获取函数的参数的数组
        if (empty($args)) {
            return null;
        }
        $arr = array_shift($args);
        if (!is_array($arr)) {
            throw new Exception("第一个参数不为数组");
        }
        foreach ($args as $key => $field) {
            if (is_string($field)) {
                $temp = array();
                foreach ($arr as $index => $val) {
                    $temp[$index] = $val[$field];
                }
                $args[$key] = $temp;
            }
        }
        $args[] = &$arr;//引用值
        call_user_func_array('array_multisort', $args);
        return array_pop($args);
    }
}

if (!function_exists("filterArrayByFirst")) {
    /**
     * 给定两个数组，过滤第二个数组中第一个数组的键值
     *
     * @param $arr1
     * @param $arr2
     * create_at: 2023-07-12 18:04:50
     * update_at: 2023-07-12 18:04:50
     */
    function filterArrayByFirst($arr1, $arr2)
    {
        $arr = [];

        if (!$arr1 || !$arr2) {
            return $arr;
        }

        foreach ($arr2 as $key => $value) {
            if (isset($arr1[$key])) {
                $arr[$key] = $value;
            }
        }
        return $arr;
    }
}

if (!function_exists("isAllEmpty")) {
    /**
     * 判断数组中的值是否全部为空
     *
     * @param $arr
     * @return bool
     * create_at: 2023-10-05 10:12:59
     * update_at: 2023-10-05 10:12:59
     */
    function isAllEmpty($arr)
    {
        if (empty($arr)) {
            return true;
        }

        foreach ($arr as $value) {
            if (!empty($value)) {
                return false;
            }
        }

        return true;
    }
}
